package 责任链模式;

/**
 * 创建不同类型的记录器。赋予它们不同的错误级别，并在每个记录器中设置下一个记录器。
 * 每个记录器中的下一个记录器代表的是链的一部分。
 * @author WZW
 * @email wangzhanwei@lumlord.com
 * @date 2020/3/18  15:03
 */
public class ChainPatternDemo {
    private static AbstractLogger getChainOfLoggers(){

        AbstractLogger errorLogger = new ErrorLogger(AbstractLogger.ERROR);
        AbstractLogger fileLogger = new FileLogger(AbstractLogger.DEBUG);
        AbstractLogger consoleLogger = new ConsoleLogger(AbstractLogger.INFO);

        errorLogger.setNextLogger(fileLogger);
        fileLogger.setNextLogger(consoleLogger);

        return errorLogger;
    }

    public static void main(String[] args) {
        AbstractLogger loggerChain = getChainOfLoggers();

        loggerChain.logMessage(AbstractLogger.INFO, "这是 INFO 级别的");

        loggerChain.logMessage(AbstractLogger.DEBUG,
                "这是 DEBUG 级别的");

        loggerChain.logMessage(AbstractLogger.ERROR,
                "这是 ERROR 级别的");
    }
}
